home *** CD-ROM | disk | FTP | other *** search
/ Aminet 38 / Aminet 38 (2000)(Schatztruhe)[!][Aug 2000].iso / Aminet / dev / basic / BlitzASMInclud.lha / BlitzASMInclude / blitz.i < prev    next >
Encoding:
Text File  |  2000-02-26  |  6.1 KB  |  232 lines

  1. *** Blitz.i ****************************************************************************
  2. *                                                                                      *
  3. * Written by Olivier Laviale (lotan9@aol.com)                                          *
  4. *                                                                                      *
  5. *** Start of the library ***************************************************************
  6. *                                                                                      *
  7. * Do not touch / move / remove the label _BlitzLibStart, or you  will  no  longer  be  *
  8. * able to use ALibJsr Macro, and all BlitzSystem functions...                          *
  9. *                                                                                      *
  10. _BlitzLibStart
  11. *                                                                                      *
  12. * Note that Blitz.i must always be included first, because of this label, as it  must  *
  13. * be the first of the source.                                                          *
  14. *                                                                                      *
  15. ****************************************************************************************
  16.  
  17. *** Macros to build a library for BlitzBasic *******************************************
  18.  
  19. libheader   Macro
  20.             MOVEQ   #0,d0
  21.             RTS
  22.  
  23.             Dc.w    \1
  24.             Dc.l    0,0,0,0,\2
  25.             Dc.w    \3
  26.             Dc.l    \4,0,0,0,\5
  27.             EndM
  28.  
  29. astatement  Macro
  30.             Dc.w    1,0,0
  31.             EndM
  32.  
  33. acommand    Macro
  34.             Dc.b    \1,3
  35.             Dc.w    0,0
  36.             EndM
  37.  
  38. afunction   Macro
  39.             Dc.b    \1,2
  40.             Dc.w    0,0
  41.             EndM
  42.  
  43. args        Macro
  44.             Dc.w    NARG
  45.                 REPT    NARG
  46.                 Dc.b    \+
  47.                 ENDR
  48.             Even
  49.             EndM
  50.  
  51. repa        Macro
  52.             Dc.w        (\+ << 12) | (\+ << 8) | (NARG-2)
  53.                 REPT  NARG-2
  54.                 Dc.b  \+
  55.                 ENDR
  56.             Even
  57.             EndM
  58.  
  59. libs        Macro
  60.                 REPT    NARG
  61.                 Dc.w    \+
  62.                 ENDR
  63.             EndM
  64.  
  65. subs        Macro
  66.             Dc.l    0
  67.             Dc.w    \2
  68.             Dc.l    \1,\3
  69.             EndM
  70.  
  71. name        Macro
  72.             Dc.w    $FFFF,0,0,0
  73.             Dc.b    \1,0,\2,0
  74.             Even
  75.             EndM
  76.  
  77. libfin      Macro
  78.             Dc.w    $FFFF,0,0
  79.             EndM
  80.  
  81. nullsub     Macro
  82.             Dc.w    0,0,0
  83. CARG    SET 4
  84.                 REPT    NARG-3
  85.                 Dc.w    \+
  86.                 ENDR
  87.             Dc.w    0
  88.             Dc.l \2,\1,\3
  89.             EndM
  90.  
  91. *** Supported Types ********************************************************************
  92.  
  93. byte        EQU 1
  94. word        EQU 2
  95. long        EQU 3
  96. quick       EQU 4
  97. float       EQU 5
  98. string      EQU 7
  99.  
  100. usesize     equ 0
  101. unknown     equ 8
  102. arrayend    equ 16
  103. array       equ 32
  104. push        equ 64
  105. varptr      equ 128
  106.  
  107. *** BlitzLibraries constants ***********************************************************
  108.  
  109. ; These constants are for passing data directly to a register from a library
  110.  
  111. ld0 equ    0
  112. ld1 equ $100
  113. ld2 equ $200
  114. ld3 equ $300
  115. ld4 equ $400
  116. ld5 equ $500
  117. ld6 equ $600
  118. ld7 equ $700
  119.  
  120. la0 equ $1000
  121. la1 equ $1100
  122. la2 equ $1200
  123. la3 equ $1300
  124. la6 equ $1600
  125.  
  126. ; This one means you want it pushed on the stack
  127.  
  128. lpush equ $ff00
  129.  
  130. ; Asking for a USED type data puts the currently used struct of a max type lib into
  131. ; the appropriate reg
  132.  
  133. _used equ 2
  134.  
  135. ud0 equ ld0|_used
  136. ud1 equ ld1|_used
  137. ud2 equ ld2|_used
  138. ud3 equ ld3|_used
  139. ud4 equ ld4|_used
  140. ud5 equ ld5|_used
  141. ud6 equ ld6|_used
  142. ud7 equ ld7|_used
  143.  
  144. ua0 equ la0|_used
  145. ua1 equ la1|_used
  146. ua2 equ la2|_used
  147. ua3 equ la3|_used
  148. ua6 equ la6|_used
  149.  
  150. ** Amiga Libraries *********************************************************************
  151.  
  152. intuitionlib            equ 255
  153. graphicslib             equ 254
  154. execlib                 equ 253
  155. doslib                  equ 252
  156. diskfontlib             equ 251
  157. graphicslib2            equ 250
  158. doslib2                 equ 249
  159. amigaguidelib           equ 248
  160. asllib                  equ 247
  161. battclocklib            equ 246
  162. batmemlib               equ 245
  163. bulletlib               equ 244
  164. cardreslib              equ 243
  165. ciaalib                 equ 242
  166. ciablib                 equ 241
  167. commoditieslib          equ 240
  168. datatypeslib            equ 239
  169. disklib                 equ 238
  170. expansionlib            equ 237
  171. gadtoolslib             equ 236
  172. iconlib                 equ 235
  173. iffparselib             equ 234
  174. keymaplib               equ 233
  175. layerslib               equ 232
  176. localelib               equ 231
  177. mathffplib              equ 230
  178. mathieeedoubbaslib      equ 229
  179. mathieeedoubtranslib    equ 228
  180. mathieeesingbaslib      equ 227
  181. mathieeesingtranslib    equ 226
  182. mathtranslib            equ 225
  183. misclib                 equ 224
  184. potgolib                equ 223
  185. rexxsyslib              equ 222
  186. utilitylib              equ 221
  187. wblib                   equ 220
  188.  
  189. *** Blitz System ***********************************************************************
  190.  
  191. ALibJsr     Macro
  192.             JSR   _BlitzLibStart-($80000000-\1)
  193.             ENDM
  194.  
  195. BLibJsr     MACRO
  196.             JSR   _BlitzLibStart-( ($4000-\2) << 16 + (0 - \1) << 16 >> 16)
  197.             ENDM
  198.  
  199. Blitz_AllocMem    equ   $0000C002
  200. Blitz_FreeMem     equ   $0000C003
  201. Blitz_AllocStr    equ   $0000CF01
  202. Blitz_FreeStr     equ   $0000CF02
  203.  
  204. BAllocMem   Macro
  205.       MOVE.L      \1,d0                   ; Size
  206.       MOVE.L      \2,d1                   ; Type
  207.       ALibJsr     Blitz_AllocMem
  208.             IFEQ  NARG-3
  209.       MOVE.L      d0,\3                   ; Var holding result
  210.             EndC
  211.  
  212.             EndM
  213.  
  214. BFreeMem    Macro
  215.       MOVEA.L     \1,a1                   ; Addr
  216.       MOVE.L      \2,d0                   ; Size
  217.       ALibJsr     Blitz_FreeMem
  218.             EndM
  219.  
  220. BAllocStr   Macro
  221.       MOVE.L      \1,d1                   ; Size
  222.       ALibJsr     Blitz_AllocStr
  223.             IFEQ  NARG-2
  224.       MOVE.L      d0,\2                   ; Var holding result
  225.             EndC
  226.             EndM
  227.  
  228. BFreeStr    Macro
  229.       MOVE.L      \1,d0                   ; Addr
  230.       ALibJsr     Blitz_FreeStr
  231.             EndM
  232.